package com.yidu.hbats.action.atsData;

import com.yidu.hbats.model.*;
import com.yidu.hbats.service.atsBase.AtsBaseItemService;
import com.yidu.hbats.service.atsBase.AtsBaseSportItemService;
import com.yidu.hbats.service.atsBase.AtsBaseSportService;
import com.yidu.hbats.service.atsData.AtsDataBatchService;
import com.yidu.hbats.service.atsData.AtsDataService;
import com.yidu.hbats.service.emp.AtsEmpAthleteService;
import com.yidu.utils.AtsBaseItemTree;
import com.yidu.utils.Message;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * @描述：
 * @ClassName:hbats
 * @backage:com.liandyao.hbats.action.atsData
 * @Date:2019 2019/10/31 9:14
 * @Author:ltx
 **/
@Controller
@RequestMapping("/atsData")
public class AtsDataController {

    Logger logger= LoggerFactory.getLogger(getClass());
    /**
     * 运动员service
     */
    @Resource
    private AtsEmpAthleteService atsEmpAthleteService;

    /**
     * 数据录入service
     */
    @Resource
    private AtsDataService atsDataService;

    /**
     * 指标service
     */
    @Resource
    private AtsBaseItemService atsBaseItemService;
    /**
     * 体育项目关联指标service
     */
    @Resource
    private AtsBaseSportItemService atsBaseSportItemService;

    /**
     *体育项目service
     */
    @Resource
    private AtsBaseSportService atsBaseSportService;

    /**
     * 数据批次service
     */
    @Resource
    private AtsDataBatchService atsDataBatchService;

    /**
     * 根据教练员ID查询旗下的所有运动员
     * @return 运动员集合
     */
    @RequestMapping("selectAthleteAll")
    @ResponseBody
    public List<AtsEmpAthlete> selectAthleteAll(AtsEmpAthlete atsEmpAthlete){
        return atsEmpAthleteService.findAll(atsEmpAthlete);
    }

    /**
     * 存入实际指标数据
     * @param request 请求
     * @param atsData 所有指标数据
     * @return 存储状态
     */
    @RequestMapping("addAtsData")
    @ResponseBody
    public Message addAtsData(HttpServletRequest request, @RequestParam("atsData[]")String[] atsData, AtsDataBatch atsDataBatch){

        Integer ba = atsDataBatchService.newBatch(atsDataBatch.getAthleteId(),atsDataBatch.getSportId());
        System.out.println(atsDataBatch.getBatchName());
        if(atsDataBatch.getBatchId() == null){
            ba= ba+1;
        }
        atsDataBatch.setBatchName(ba.toString());
        return atsDataService.addAtsData(request,atsData,atsDataBatch);
    }
    /**
     * 根据体育项目ID查询体育项目
     * @param sportId 体育项目ID
     * @return 体育项目
     */
    @RequestMapping("selectAtsBaseSportById")
    @ResponseBody
    public AtsBaseSport selectAtsBaseSportById(Integer sportId){
        return atsBaseSportService.selectByPrimaryKey(sportId);
    }


    /**
     * 根据体育项目查询指标
     * @param sportId 体育项目ID
     * @return 树状参数
     */
    @RequestMapping("selectAtsBaseItem")
    @ResponseBody
    public List<AtsBaseItemTree> selectAtsBaseItem(Integer sportId){
        //调用树状图工具方法
        List<AtsBaseItem> list = atsBaseItemService.selectSportIdItem(sportId);
        List<AtsBaseItemTree> listTree = new ArrayList<>();
        for (Iterator<AtsBaseItem> iterator = list.iterator(); iterator.hasNext(); ) {
            AtsBaseItem next =  iterator.next();
            AtsBaseItemTree AtsBaseItemTree = new AtsBaseItemTree();
            AtsBaseItemTree.setId(String.valueOf(next.getItemId()));
            AtsBaseItemTree.setValue(String.valueOf(next.getParentId()));
            AtsBaseItemTree.setName(next.getItemExp());
            AtsBaseItemTree.setTitle(next.getItemExp());
            System.out.println(AtsBaseItemTree.getId()+" "+AtsBaseItemTree.getName());
            listTree.add(AtsBaseItemTree);
        }

        List<AtsBaseItemTree> listAtsBaseItemTree = createTree(listTree);
        return listAtsBaseItemTree;
    }
    /**
     * 下拉树
     * @param nodes
     * @return
     */
    public List<AtsBaseItemTree> createTree(List<AtsBaseItemTree> nodes) {
        if (nodes == null || nodes.size() < 0){
            System.out.println(nodes.size());
            return null;
        }
        List<AtsBaseItemTree> nodeList = new ArrayList<>();// 根节点自定义，但是要和pid对应好
        // 将所有节点添加到多叉树中
        for (AtsBaseItemTree node : nodes) {
            if (node.getValue().equals("0")) {// 根节点自定义，但是要和pid对应好
                // 向根添加一个节点
                nodeList.add(node);
            } else {
                for (AtsBaseItemTree item : nodes) {
                    if (item.getId().equals(node.getValue())) {
                        item.getChildren().add(node);
                        item.setData(item.getChildren());
                        break ;
                    }
                }
            }
        }
        return nodeList;
    }
    /**
     * 根据用户ID和体育项目查询暂存数据
     * @param atsDataBatch 数据批次
     * @return 实际数据
     */
    @RequestMapping("atsDataGive")
    @ResponseBody
    public AtsDataBatch atsDataGive(AtsDataBatch atsDataBatch){
        atsDataBatch.setIsva(2);
        return atsDataBatchService.selectAtsDataCondition(atsDataBatch);
    }

    /**
     * 根据用户ID和体育项目查询暂存数据
     * @param batchId 数据批次ID
     * @return 实际数据
     */
    @RequestMapping("atsDataByIdBatch")
    @ResponseBody
    public List<AtsData> atsDataByIdBatch(Integer batchId){
        return atsDataService.atsDataByIdBatch(batchId);
    }
    /**
     * 判断批次名是否相同
     * @param athleteId 运动员ID
     * @param batchName 批次名称
     * @return 状态
     */
    @RequestMapping("atsDataCompare")
    @ResponseBody
    public Message atsDataCompare(Integer athleteId,String batchName){
        Message message=new Message();
        int rows=atsDataBatchService.atsDataCompare(athleteId,batchName);
        if(rows>0){
            message.setNum(1);
            message.setMsg("批次已存在，请修改批次名");
        }else{
            message.setNum(0);
        }
        return message;
    }

}
